package com.ruoyi.device.service.impl;

import java.util.List;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.device.domain.TModelfloorgroup;
import com.ruoyi.device.mapper.TModelfloorgroupMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.device.mapper.TModelcamgroupMapper;
import com.ruoyi.device.domain.TModelcamgroup;
import com.ruoyi.device.service.ITModelcamgroupService;
import org.springframework.transaction.annotation.Transactional;

import static com.ruoyi.common.security.utils.SecurityUtils.getLoginUser;

/**
 * 摄像头分组Service业务层处理
 * 
 * @author li
 * @date 2025-09-23
 */
@Service
public class TModelcamgroupServiceImpl implements ITModelcamgroupService 
{
    @Autowired
    private TModelcamgroupMapper tModelcamgroupMapper;
    @Autowired
    private TModelfloorgroupMapper tModelfloorgroupMapper;

    /**
     * 查询摄像头分组
     * 
     * @param id 摄像头分组主键
     * @return 摄像头分组
     */
    @Override
    public TModelcamgroup selectTModelcamgroupById(String id)
    {
        return tModelcamgroupMapper.selectTModelcamgroupById(id);
    }

    /**
     * 查询摄像头分组列表
     * 
     * @param tModelcamgroup 摄像头分组
     * @return 摄像头分组
     */
    @Override
    public List<TModelcamgroup> selectTModelcamgroupList(TModelcamgroup tModelcamgroup)
    {
        return tModelcamgroupMapper.selectTModelcamgroupList(tModelcamgroup);
    }

    /**
     * 新增摄像头分组
     * 
     * @param tModelcamgroup 摄像头分组
     * @return 结果
     */
    @Override
    public int insertTModelcamgroup(TModelcamgroup tModelcamgroup)
    {
        tModelcamgroup.setCreateBy(getLoginUser().getUsername());
        tModelcamgroup.setCreateTime(DateUtils.getNowDate());
        return tModelcamgroupMapper.insertTModelcamgroup(tModelcamgroup);
    }

    /**
     * 修改摄像头分组
     * 
     * @param tModelcamgroup 摄像头分组
     * @return 结果
     */
    @Override
    public int updateTModelcamgroup(TModelcamgroup tModelcamgroup)
    {
        tModelcamgroup.setUpdateBy(getLoginUser().getUsername());
        tModelcamgroup.setUpdateTime(DateUtils.getNowDate());
        return tModelcamgroupMapper.updateTModelcamgroup(tModelcamgroup);
    }

    /**
     * 批量删除摄像头分组
     * 
     * @param ids 需要删除的摄像头分组主键
     * @return 结果
     */
    @Override
    public int deleteTModelcamgroupByIds(String[] ids)
    {
        return tModelcamgroupMapper.deleteTModelcamgroupByIds(ids);
    }

    /**
     * 删除摄像头分组信息
     * 
     * @param id 摄像头分组主键
     * @return 结果
     */
    @Override
    public int deleteTModelcamgroupById(String id)
    {
        return tModelcamgroupMapper.deleteTModelcamgroupById(id);
    }

    @Override
    public TModelcamgroup getInfoCamInfo(Long fId) {
        return tModelcamgroupMapper.getInfoCamInfo(fId);
    }

    @Override
    @Transactional
    public int updateTModelcamgroupMyInfo(TModelcamgroup tModelcamgroup) {
        TModelcamgroup infoCamInfo = tModelcamgroupMapper.getInfoCamInfo(tModelcamgroup.getFId());
        if(infoCamInfo==null){
            //保存摄像头的同时，查询当前有多少摄像头
            if (tModelcamgroup.getCode()!=null&&!tModelcamgroup.getCode().equals("")){
                String[] split = tModelcamgroup.getCode().split(",");
                TModelfloorgroup tModelfloorgroup = tModelfloorgroupMapper.selectTModelfloorgroupById(String.valueOf(tModelcamgroup.getFId()));
                tModelfloorgroup.setCamCount(Long.valueOf(split.length));
                tModelfloorgroupMapper.updateTModelfloorgroup(tModelfloorgroup);
            }else {
                TModelfloorgroup tModelfloorgroup = tModelfloorgroupMapper.selectTModelfloorgroupById(String.valueOf(tModelcamgroup.getFId()));
                tModelfloorgroup.setCamCount(Long.valueOf(0));
                tModelfloorgroupMapper.updateTModelfloorgroup(tModelfloorgroup);
            }
            return tModelcamgroupMapper.insertTModelcamgroup(tModelcamgroup);
        }else {
            //保存摄像头的同时，查询当前有多少摄像头
            if (tModelcamgroup.getCode()!=null&&!tModelcamgroup.getCode().equals("")){
                String[] split = tModelcamgroup.getCode().split(",");
                TModelfloorgroup tModelfloorgroup = tModelfloorgroupMapper.selectTModelfloorgroupById(String.valueOf(tModelcamgroup.getFId()));
                tModelfloorgroup.setCamCount(Long.valueOf(split.length));
                tModelfloorgroupMapper.updateTModelfloorgroup(tModelfloorgroup);
            }else {
                TModelfloorgroup tModelfloorgroup = tModelfloorgroupMapper.selectTModelfloorgroupById(String.valueOf(tModelcamgroup.getFId()));
                tModelfloorgroup.setCamCount(Long.valueOf(0));
                tModelfloorgroupMapper.updateTModelfloorgroup(tModelfloorgroup);
            }
        }
        return tModelcamgroupMapper.updateTModelcamgroupMyInfo(tModelcamgroup);
    }
}
